﻿using System;
using System.Diagnostics;
using System.IO;
using System.Xml;
using MiniBuild;

namespace Titanic
{
   internal class Titan
    {
        
        private static int Main(string[] args)
        {
            if (args.Length == 1 && !args[0].Equals("/?") && !args[0].Equals("/?"))
            {
                
                if (!File.Exists(args[0]))
                {
                    Console.WriteLine("Указанный xml-файл не найден (" + args[0] + ").");
                    Console.ReadKey(true);
                    return -1;
                }
                XmlDocument xml = new XmlDocument();
                try

                {
                    xml.Load(args[0]);
                }
                catch (XmlException e)
                {
                    Console.WriteLine("Указанный xml-файл почитать не удалось:\n" + e);
                    Console.ReadKey(true);
                    return -2;
                }


                IMiniBuild builder;
                try
                {
                    builder = new MiniBuilder();
                    FileStream fs = new FileStream(args[0], FileMode.Open);
                    XmlReader reader = new XmlTextReader(fs);

                    builder.SetXmlConfig(reader);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    builder = null;
                }
                if (builder == null)
                {
                    return -4;
                }


                
                builder.StreamOutput = Console.Out;
                builder.BreakOnError = false;
                try
                {
                    Console.WriteLine(builder.Compile());
                }
                catch (Exception e)
                {
                    Console.WriteLine("ERRORS in buiding. " + e);
                }

                Console.ReadKey(true);
            }
            else
            {
                Console.WriteLine(
                    "Укажите путь к xml-файлу, в котором лежит конфигурация сборки. Посмотреть пример файла можно в файле projects.xml.");
                Console.ReadKey(true);
                return -100;
            }
            return 0;
        }

    }
}